package cj;

import cn.hutool.json.JSONObject;
import com.vpx.Application;
import com.vpx.server.bean.order.system.ProjectConfigPageOrder;
import com.vpx.server.framework.base.ResultMsg;
import com.vpx.server.service.system.*;
import lombok.extern.slf4j.Slf4j;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.w3c.dom.Document;

import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class XmlTestDao {
//    @Autowired
//    private XmlProjectService xmlProjectService;
//    @Autowired
//    private XmlHardConfigService xmlHardConfigService;
//    @Autowired
//    private XmlBusConfigService xmlBusConfigService;
//    @Autowired
//    private XmlObserverConfigService xmlObserverConfigService;
//    @Autowired
//    private XmlProtocolConfigService xmlProtocolConfigService;
//    @Autowired
//    private XmlShareConfigService xmlShareConfigService;
//    @Resource
//    SqlExtService sqlExtService;
//    @Test
//    @Ignore
//    public void createProjectXml() {
////        Document document = xmlProjectService.getProjectXML("2a2ee8385a372dd3d2c895f65002c4c2");
////        xmlProjectService.createProjectXml(document,"D:\\aaa\\tets.xml");
//    }
//    @Test
//    @Ignore
//    public void createHardConfigXml() {
//        Document document = xmlHardConfigService.getHardConfigXML("2a2ee8385a372dd3d2c895f65002c4c2");
//        xmlHardConfigService.createHardConfigXml(document,"D:\\aaa\\hard.xml");
//    }
//    @Test
//    @Ignore
//    public void createBusConfigXml() {
//        Document document = xmlBusConfigService.getBusConfigXML("2a2ee8385a372dd3d2c895f65002c4c2");
//        xmlBusConfigService.createBusConfigXml(document,"D:\\aaa\\bus.xml");
//    }
//    @Test
//    @Ignore
//    public void createObserverConfigXml() {
//        Document document = xmlObserverConfigService.getObserverConfigXML("2a2ee8385a372dd3d2c895f65002c4c2");
//        xmlObserverConfigService.createObserverConfigXml(document,"D:\\aaa\\observer.xml");
//    }
//    @Test
//    @Ignore
//    public void createProtocolConfigXml() {
//        Document document = xmlProtocolConfigService.getProtocolConfigXML("2a2ee8385a372dd3d2c895f65002c4c2");
//        xmlProtocolConfigService.createProtocolConfigXml(document,"D:\\aaa\\procotol.xml");
//    }
//    @Test
//    @Ignore
//    public void createShareConfigXml() {
//        Document document = xmlShareConfigService.getShareConfigXML("2a2ee8385a372dd3d2c895f65002c4c2");
//        xmlShareConfigService.createShareConfigXml(document,"D:\\aaa\\share.xml");
//    }
//    @Test
//    public void testFilter() {
//        List<ProjectConfigPageOrder> list = new ArrayList<>();
//        ProjectConfigPageOrder object = new ProjectConfigPageOrder();
//        object.setTempalteId("111");
//        object.setConfigName("name1");
//        object.setConfigCode("code1");
//        list.add(object);
//        object = new ProjectConfigPageOrder();
//        object.setTempalteId("111");
//        object.setConfigName("name2");
//        object.setConfigCode("code2");
//        list.add(object);
//        object = new ProjectConfigPageOrder();
//        object.setTempalteId("111");
//        object.setConfigName("name3");
//        object.setConfigCode("code3");
//        list.add(object);
//        object = new ProjectConfigPageOrder();
//        object.setTempalteId("222");
//        object.setConfigName("name22");
//        object.setConfigCode("code1");
//        list.add(object);
//        long i = list.stream().map(ProjectConfigPageOrder::getTempalteId).filter(String::isEmpty).count();
//        if(i>0){
//            System.out.println("TempalteId不能有空");
//        }
//        long j = list.stream().map(ProjectConfigPageOrder::getConfigName).filter(String::isEmpty).count();
//        if(j>0){
//            System.out.println("ConfigName不能有空");
//        }
//        long k = list.stream().map(ProjectConfigPageOrder::getConfigCode).filter(String::isEmpty).count();
//        if(k>0){
//            System.out.println("ConfigCode不能有空");
//        }
//        List configNameList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()-> new TreeSet<>(Comparator.comparing(o-> o.getTempalteId()+";"+o.getConfigName()))),ArrayList::new));
//        if(configNameList.size()<list.size()){
//            System.out.println("ConfigName不能重名");
//        }
//        List configCodeList = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()-> new TreeSet<>(Comparator.comparing(o-> o.getTempalteId()+";"+o.getConfigCode()))),ArrayList::new));
//        if(configCodeList.size()<list.size()){
//            System.out.println("ConfigCode不能重名");
//        }
//        /*Map<String,List<ProjectConfigPageOrder>> configMap = list.stream().collect(Collectors.groupingBy(ProjectConfigPageOrder::getTempalteId));
//        configMap.forEach((key,values)->{
//                if(values.stream().map(ProjectConfigPageOrder::getConfigName).distinct().collect(Collectors.toList()).size() != values.size()){
//                    System.out.println("模板:"+key+"中ConfigName不能重名");
//                }
//                if(values.stream().map(ProjectConfigPageOrder::getConfigCode).distinct().collect(Collectors.toList()).size() != values.size()){
//                    System.out.println("模板:"+key+"中ConfigCode不能重名");
//                }
//            }
//        );*/
//    }
}
